/*
 * Decompiled with CFR 0.150.
 * 
 * Could not load the following classes:
 *  cn.hutool.core.date.DateUtil
 *  cn.hutool.core.util.ObjectUtil
 *  cn.hutool.core.util.StrUtil
 *  com.alibaba.fastjson.JSON
 *  de.felixroske.jfxsupport.FXMLController
 *  javafx.collections.FXCollections
 *  javafx.collections.ObservableList
 *  javafx.event.EventHandler
 *  javafx.fxml.FXML
 *  javafx.fxml.Initializable
 *  javafx.scene.control.Alert
 *  javafx.scene.control.Alert$AlertType
 *  javafx.scene.control.DatePicker
 *  javafx.scene.control.ScrollPane
 *  javafx.scene.control.TableColumn
 *  javafx.scene.control.TableView
 *  javafx.scene.control.TextField
 *  javafx.scene.control.cell.PropertyValueFactory
 *  javafx.scene.input.KeyCode
 *  javafx.scene.input.KeyEvent
 *  javafx.scene.layout.VBox
 *  javafx.util.Callback
 *  javafx.util.StringConverter
 *  org.slf4j.Logger
 *  org.slf4j.LoggerFactory
 *  org.springframework.beans.factory.annotation.Autowired
 */
package com.gys.controller.invoicing;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.gys.common.business.InvoicingUtil;
import com.gys.common.data.HttpJson;
import com.gys.common.enums.ProForm;
import com.gys.common.util.CommonUtil;
import com.gys.common.util.ExcelUtil;
import com.gys.controller.BaseController;
import com.gys.controller.index.IndexController;
import com.gys.data.invoicing.InvoicingInData;
import com.gys.data.invoicing.InvoicingOutData;
import de.felixroske.jfxsupport.FXMLController;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.DatePicker;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.VBox;
import javafx.util.Callback;
import javafx.util.StringConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

@FXMLController
public class InvoicingController
extends BaseController
implements Initializable {
    private static final Logger log = LoggerFactory.getLogger(InvoicingController.class);
    @FXML
    private TableColumn<InvoicingOutData, String> gssbApprovalNum;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbDate;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbDosageForm;
    @FXML
    private TextField batchNo;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbValidUntil;
    @FXML
    private VBox vBox;
    @FXML
    private ScrollPane scrollPane;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbBatchNo;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbRetailPrice;
    @FXML
    private TableView<InvoicingOutData> tableView;
    @FXML
    private TableColumn<InvoicingOutData, String> index;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbFormat;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbUnit;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbProName;
    @FXML
    private TextField proId;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbProId;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbFactory;
    @FXML
    private DatePicker finishDate;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbType;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbQty;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbOrigin;
    @FXML
    private DatePicker startDate;
    @FXML
    private TableColumn<InvoicingOutData, String> gssbVoucherId;
    private ObservableList<InvoicingOutData> observableTableList = FXCollections.observableArrayList(new ArrayList());
    @Autowired
    private IndexController indexController;
    private final String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date());

    public void initialize(URL location, ResourceBundle resources) {
        this.scrollPane.setPrefWidth(this.getContentWidth());
        this.scrollPane.setPrefHeight(this.getContentHeight());
        this.vBox.setPrefWidth(this.getContentWidth());
        this.vBox.setPrefHeight(this.getContentHeight());
        this.tableView.setPrefWidth(this.getContentWidth());
        StringConverter converter = CommonUtil.dataPickerFormat("yyyyMMdd");
        this.startDate.setConverter(converter);
        this.finishDate.setConverter(converter);
        this.init();
    }

    @Override
    public void init() {
        if (ObjectUtil.isEmpty(this.scrollPane)) {
            return;
        }
        this.indexController.scrollContentPane.setOnKeyReleased((EventHandler)new EventHandler<KeyEvent>(){

            public void handle(KeyEvent e) {
                if (e.getCode() == KeyCode.ENTER) {
                    InvoicingController.this.queryAction();
                }
                e.consume();
            }
        });
    }

    @FXML
    void queryAction() {
        Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", null);
        if (StrUtil.isBlank((CharSequence)this.proId.getText())) {
            alert.setContentText("\u8bf7\u586b\u5199\u5546\u54c1\u7f16\u7801");
            alert.showAndWait();
            return;
        }
        if (ObjectUtil.isEmpty(this.startDate.getValue())) {
            alert.setContentText("\u8bf7\u586b\u5199\u8d77\u59cb\u65e5\u671f");
            alert.showAndWait();
            return;
        }
        if (ObjectUtil.isEmpty(this.finishDate.getValue())) {
            alert.setContentText("\u8bf7\u586b\u5199\u7ed3\u675f\u65e5\u671f");
            alert.showAndWait();
            return;
        }
        this.bingTableCell();
        this.initTable();
    }

    @FXML
    void printAction() {
        List<String> columnName = Arrays.asList("\u5e8f\u53f7", "\u5546\u54c1\u7f16\u7801", "\u5546\u54c1\u540d\u79f0", "\u96f6\u552e\u4ef7", "\u6279\u53f7", "\u6709\u6548\u671f\u81f3", "\u7c7b\u578b", "\u5355\u53f7", "\u53d1\u751f\u65e5\u671f", "\u6570\u91cf", "\u5382\u5bb6", "\u4ea7\u5730", "\u5242\u578b", "\u5355\u4f4d", "\u89c4\u683c", "\u6279\u51c6\u6587\u53f7");
        List<String> columnId = Arrays.asList("index", "gssbProId", "gssbProName", "gssbRetailPrice", "gssbBatchNo", "gssbValidUntil", "gssbType", "gssbVoucherId", "gssbDate", "gssbQty", "gssbFactory", "gssbOrigin", "gssbDosageForm", "gssbUnit", "gssbFormat", "gssbApprovalNum");
        boolean result = ExcelUtil.export("\u5546\u54c1\u8fdb\u9500\u5b58", this.observableTableList, columnName, columnId);
        if (result) {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", "\u5bfc\u51fa\u6210\u529f");
            alert.showAndWait();
        }
    }

    public TableView<InvoicingOutData> initTable() {
        InvoicingInData inData = new InvoicingInData();
        if (ObjectUtil.isNotEmpty(this.proId.getText())) {
            inData.setGssbProId(this.proId.getText());
        }
        if (ObjectUtil.isNotEmpty(this.batchNo.getText())) {
            inData.setGssbBatchNo(this.batchNo.getText());
        }
        if (ObjectUtil.isNotEmpty(this.startDate.getValue())) {
            inData.setGssbStartDate(DateUtil.format((Date)DateUtil.parse((String)((LocalDate)this.startDate.getValue()).toString()), (String)"yyyyMMdd"));
        }
        if (ObjectUtil.isNotEmpty(this.finishDate.getValue())) {
            inData.setGssbFinishDate(DateUtil.format((Date)DateUtil.parse((String)((LocalDate)this.finishDate.getValue()).toString()), (String)"yyyyMMdd"));
        }
        ArrayList<InvoicingOutData> dataList = new ArrayList<InvoicingOutData>();
        HttpJson rsp = InvoicingUtil.getInvoicingList(inData);
        if (rsp.isSuccess()) {
            List<InvoicingOutData> resultList = JSON.parseArray((String)rsp.getMsg(), InvoicingOutData.class);
            int index = 1;
            for (InvoicingOutData outData : resultList) {
                outData.setIndex(index);
                outData.setGssbType("\u671f\u521d");
                outData.setGssbDosageForm(ProForm.getName(outData.getGssbDosageForm()));
                dataList.add(outData);
                int total = Integer.valueOf(outData.getGssbQty());
                for (InvoicingOutData detail : outData.getDetail()) {
                    detail.setIndex(++index);
                    dataList.add(detail);
                    total += Integer.valueOf(detail.getGssbQty()).intValue();
                }
                InvoicingOutData totalOutData = new InvoicingOutData();
                totalOutData.setIndex(++index);
                totalOutData.setGssbType("\u6c47\u603b");
                totalOutData.setGssbQty(StrUtil.toString(total));
                dataList.add(totalOutData);
                ++index;
            }
        } else {
            Alert alert = this.createAlert(Alert.AlertType.INFORMATION, "\u63d0\u793a\u4fe1\u606f", rsp.getMsg());
            alert.showAndWait();
            return new TableView();
        }
        this.observableTableList.clear();
        this.observableTableList = FXCollections.observableArrayList(dataList);
        this.tableView.setItems(this.observableTableList);
        return this.tableView;
    }

    private void bingTableCell() {
        this.index.setCellValueFactory((Callback)new PropertyValueFactory(this.index.getId()));
        this.gssbProId.setCellValueFactory((Callback)new PropertyValueFactory("gssbProId"));
        this.gssbProName.setCellValueFactory((Callback)new PropertyValueFactory("gssbProName"));
        this.gssbRetailPrice.setCellValueFactory((Callback)new PropertyValueFactory("gssbRetailPrice"));
        this.gssbBatchNo.setCellValueFactory((Callback)new PropertyValueFactory("gssbBatchNo"));
        this.gssbValidUntil.setCellValueFactory((Callback)new PropertyValueFactory("gssbValidUntil"));
        this.gssbType.setCellValueFactory((Callback)new PropertyValueFactory("gssbType"));
        this.gssbVoucherId.setCellValueFactory((Callback)new PropertyValueFactory("gssbVoucherId"));
        this.gssbDate.setCellValueFactory((Callback)new PropertyValueFactory("gssbDate"));
        this.gssbQty.setCellValueFactory((Callback)new PropertyValueFactory("gssbQty"));
        this.gssbFormat.setCellValueFactory((Callback)new PropertyValueFactory("gssbFormat"));
        this.gssbUnit.setCellValueFactory((Callback)new PropertyValueFactory("gssbUnit"));
        this.gssbFactory.setCellValueFactory((Callback)new PropertyValueFactory("gssbFactory"));
        this.gssbOrigin.setCellValueFactory((Callback)new PropertyValueFactory("gssbOrigin"));
        this.gssbDosageForm.setCellValueFactory((Callback)new PropertyValueFactory("gssbDosageForm"));
        this.gssbApprovalNum.setCellValueFactory((Callback)new PropertyValueFactory("gssbApprovalNum"));
    }

    @FXML
    private void reset() {
        this.proId.clear();
        this.batchNo.clear();
        this.startDate.setValue(null);
        this.finishDate.setValue(null);
    }

    public TableColumn<InvoicingOutData, String> getGssbApprovalNum() {
        return this.gssbApprovalNum;
    }

    public TableColumn<InvoicingOutData, String> getGssbDate() {
        return this.gssbDate;
    }

    public TableColumn<InvoicingOutData, String> getGssbDosageForm() {
        return this.gssbDosageForm;
    }

    public TextField getBatchNo() {
        return this.batchNo;
    }

    public TableColumn<InvoicingOutData, String> getGssbValidUntil() {
        return this.gssbValidUntil;
    }

    public VBox getVBox() {
        return this.vBox;
    }

    public ScrollPane getScrollPane() {
        return this.scrollPane;
    }

    public TableColumn<InvoicingOutData, String> getGssbBatchNo() {
        return this.gssbBatchNo;
    }

    public TableColumn<InvoicingOutData, String> getGssbRetailPrice() {
        return this.gssbRetailPrice;
    }

    public TableView<InvoicingOutData> getTableView() {
        return this.tableView;
    }

    public TableColumn<InvoicingOutData, String> getIndex() {
        return this.index;
    }

    public TableColumn<InvoicingOutData, String> getGssbFormat() {
        return this.gssbFormat;
    }

    public TableColumn<InvoicingOutData, String> getGssbUnit() {
        return this.gssbUnit;
    }

    public TableColumn<InvoicingOutData, String> getGssbProName() {
        return this.gssbProName;
    }

    public TextField getProId() {
        return this.proId;
    }

    public TableColumn<InvoicingOutData, String> getGssbProId() {
        return this.gssbProId;
    }

    public TableColumn<InvoicingOutData, String> getGssbFactory() {
        return this.gssbFactory;
    }

    public DatePicker getFinishDate() {
        return this.finishDate;
    }

    public TableColumn<InvoicingOutData, String> getGssbType() {
        return this.gssbType;
    }

    public TableColumn<InvoicingOutData, String> getGssbQty() {
        return this.gssbQty;
    }

    public TableColumn<InvoicingOutData, String> getGssbOrigin() {
        return this.gssbOrigin;
    }

    public DatePicker getStartDate() {
        return this.startDate;
    }

    public TableColumn<InvoicingOutData, String> getGssbVoucherId() {
        return this.gssbVoucherId;
    }

    public ObservableList<InvoicingOutData> getObservableTableList() {
        return this.observableTableList;
    }

    public IndexController getIndexController() {
        return this.indexController;
    }

    public String getDateStr() {
        return this.dateStr;
    }

    public void setGssbApprovalNum(TableColumn<InvoicingOutData, String> gssbApprovalNum) {
        this.gssbApprovalNum = gssbApprovalNum;
    }

    public void setGssbDate(TableColumn<InvoicingOutData, String> gssbDate) {
        this.gssbDate = gssbDate;
    }

    public void setGssbDosageForm(TableColumn<InvoicingOutData, String> gssbDosageForm) {
        this.gssbDosageForm = gssbDosageForm;
    }

    public void setBatchNo(TextField batchNo) {
        this.batchNo = batchNo;
    }

    public void setGssbValidUntil(TableColumn<InvoicingOutData, String> gssbValidUntil) {
        this.gssbValidUntil = gssbValidUntil;
    }

    public void setVBox(VBox vBox) {
        this.vBox = vBox;
    }

    public void setScrollPane(ScrollPane scrollPane) {
        this.scrollPane = scrollPane;
    }

    public void setGssbBatchNo(TableColumn<InvoicingOutData, String> gssbBatchNo) {
        this.gssbBatchNo = gssbBatchNo;
    }

    public void setGssbRetailPrice(TableColumn<InvoicingOutData, String> gssbRetailPrice) {
        this.gssbRetailPrice = gssbRetailPrice;
    }

    public void setTableView(TableView<InvoicingOutData> tableView) {
        this.tableView = tableView;
    }

    public void setIndex(TableColumn<InvoicingOutData, String> index) {
        this.index = index;
    }

    public void setGssbFormat(TableColumn<InvoicingOutData, String> gssbFormat) {
        this.gssbFormat = gssbFormat;
    }

    public void setGssbUnit(TableColumn<InvoicingOutData, String> gssbUnit) {
        this.gssbUnit = gssbUnit;
    }

    public void setGssbProName(TableColumn<InvoicingOutData, String> gssbProName) {
        this.gssbProName = gssbProName;
    }

    public void setProId(TextField proId) {
        this.proId = proId;
    }

    public void setGssbProId(TableColumn<InvoicingOutData, String> gssbProId) {
        this.gssbProId = gssbProId;
    }

    public void setGssbFactory(TableColumn<InvoicingOutData, String> gssbFactory) {
        this.gssbFactory = gssbFactory;
    }

    public void setFinishDate(DatePicker finishDate) {
        this.finishDate = finishDate;
    }

    public void setGssbType(TableColumn<InvoicingOutData, String> gssbType) {
        this.gssbType = gssbType;
    }

    public void setGssbQty(TableColumn<InvoicingOutData, String> gssbQty) {
        this.gssbQty = gssbQty;
    }

    public void setGssbOrigin(TableColumn<InvoicingOutData, String> gssbOrigin) {
        this.gssbOrigin = gssbOrigin;
    }

    public void setStartDate(DatePicker startDate) {
        this.startDate = startDate;
    }

    public void setGssbVoucherId(TableColumn<InvoicingOutData, String> gssbVoucherId) {
        this.gssbVoucherId = gssbVoucherId;
    }

    public void setObservableTableList(ObservableList<InvoicingOutData> observableTableList) {
        this.observableTableList = observableTableList;
    }

    public void setIndexController(IndexController indexController) {
        this.indexController = indexController;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof InvoicingController)) {
            return false;
        }
        InvoicingController other = (InvoicingController)o;
        if (!other.canEqual(this)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbApprovalNum = this.getGssbApprovalNum();
        TableColumn<InvoicingOutData, String> other$gssbApprovalNum = other.getGssbApprovalNum();
        if (this$gssbApprovalNum == null ? other$gssbApprovalNum != null : !this$gssbApprovalNum.equals(other$gssbApprovalNum)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbDate = this.getGssbDate();
        TableColumn<InvoicingOutData, String> other$gssbDate = other.getGssbDate();
        if (this$gssbDate == null ? other$gssbDate != null : !this$gssbDate.equals(other$gssbDate)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbDosageForm = this.getGssbDosageForm();
        TableColumn<InvoicingOutData, String> other$gssbDosageForm = other.getGssbDosageForm();
        if (this$gssbDosageForm == null ? other$gssbDosageForm != null : !this$gssbDosageForm.equals(other$gssbDosageForm)) {
            return false;
        }
        TextField this$batchNo = this.getBatchNo();
        TextField other$batchNo = other.getBatchNo();
        if (this$batchNo == null ? other$batchNo != null : !this$batchNo.equals(other$batchNo)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbValidUntil = this.getGssbValidUntil();
        TableColumn<InvoicingOutData, String> other$gssbValidUntil = other.getGssbValidUntil();
        if (this$gssbValidUntil == null ? other$gssbValidUntil != null : !this$gssbValidUntil.equals(other$gssbValidUntil)) {
            return false;
        }
        VBox this$vBox = this.getVBox();
        VBox other$vBox = other.getVBox();
        if (this$vBox == null ? other$vBox != null : !this$vBox.equals(other$vBox)) {
            return false;
        }
        ScrollPane this$scrollPane = this.getScrollPane();
        ScrollPane other$scrollPane = other.getScrollPane();
        if (this$scrollPane == null ? other$scrollPane != null : !this$scrollPane.equals(other$scrollPane)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbBatchNo = this.getGssbBatchNo();
        TableColumn<InvoicingOutData, String> other$gssbBatchNo = other.getGssbBatchNo();
        if (this$gssbBatchNo == null ? other$gssbBatchNo != null : !this$gssbBatchNo.equals(other$gssbBatchNo)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbRetailPrice = this.getGssbRetailPrice();
        TableColumn<InvoicingOutData, String> other$gssbRetailPrice = other.getGssbRetailPrice();
        if (this$gssbRetailPrice == null ? other$gssbRetailPrice != null : !this$gssbRetailPrice.equals(other$gssbRetailPrice)) {
            return false;
        }
        TableView<InvoicingOutData> this$tableView = this.getTableView();
        TableView<InvoicingOutData> other$tableView = other.getTableView();
        if (this$tableView == null ? other$tableView != null : !this$tableView.equals(other$tableView)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$index = this.getIndex();
        TableColumn<InvoicingOutData, String> other$index = other.getIndex();
        if (this$index == null ? other$index != null : !this$index.equals(other$index)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbFormat = this.getGssbFormat();
        TableColumn<InvoicingOutData, String> other$gssbFormat = other.getGssbFormat();
        if (this$gssbFormat == null ? other$gssbFormat != null : !this$gssbFormat.equals(other$gssbFormat)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbUnit = this.getGssbUnit();
        TableColumn<InvoicingOutData, String> other$gssbUnit = other.getGssbUnit();
        if (this$gssbUnit == null ? other$gssbUnit != null : !this$gssbUnit.equals(other$gssbUnit)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbProName = this.getGssbProName();
        TableColumn<InvoicingOutData, String> other$gssbProName = other.getGssbProName();
        if (this$gssbProName == null ? other$gssbProName != null : !this$gssbProName.equals(other$gssbProName)) {
            return false;
        }
        TextField this$proId = this.getProId();
        TextField other$proId = other.getProId();
        if (this$proId == null ? other$proId != null : !this$proId.equals(other$proId)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbProId = this.getGssbProId();
        TableColumn<InvoicingOutData, String> other$gssbProId = other.getGssbProId();
        if (this$gssbProId == null ? other$gssbProId != null : !this$gssbProId.equals(other$gssbProId)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbFactory = this.getGssbFactory();
        TableColumn<InvoicingOutData, String> other$gssbFactory = other.getGssbFactory();
        if (this$gssbFactory == null ? other$gssbFactory != null : !this$gssbFactory.equals(other$gssbFactory)) {
            return false;
        }
        DatePicker this$finishDate = this.getFinishDate();
        DatePicker other$finishDate = other.getFinishDate();
        if (this$finishDate == null ? other$finishDate != null : !this$finishDate.equals(other$finishDate)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbType = this.getGssbType();
        TableColumn<InvoicingOutData, String> other$gssbType = other.getGssbType();
        if (this$gssbType == null ? other$gssbType != null : !this$gssbType.equals(other$gssbType)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbQty = this.getGssbQty();
        TableColumn<InvoicingOutData, String> other$gssbQty = other.getGssbQty();
        if (this$gssbQty == null ? other$gssbQty != null : !this$gssbQty.equals(other$gssbQty)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbOrigin = this.getGssbOrigin();
        TableColumn<InvoicingOutData, String> other$gssbOrigin = other.getGssbOrigin();
        if (this$gssbOrigin == null ? other$gssbOrigin != null : !this$gssbOrigin.equals(other$gssbOrigin)) {
            return false;
        }
        DatePicker this$startDate = this.getStartDate();
        DatePicker other$startDate = other.getStartDate();
        if (this$startDate == null ? other$startDate != null : !this$startDate.equals(other$startDate)) {
            return false;
        }
        TableColumn<InvoicingOutData, String> this$gssbVoucherId = this.getGssbVoucherId();
        TableColumn<InvoicingOutData, String> other$gssbVoucherId = other.getGssbVoucherId();
        if (this$gssbVoucherId == null ? other$gssbVoucherId != null : !this$gssbVoucherId.equals(other$gssbVoucherId)) {
            return false;
        }
        ObservableList<InvoicingOutData> this$observableTableList = this.getObservableTableList();
        ObservableList<InvoicingOutData> other$observableTableList = other.getObservableTableList();
        if (this$observableTableList == null ? other$observableTableList != null : !this$observableTableList.equals(other$observableTableList)) {
            return false;
        }
        IndexController this$indexController = this.getIndexController();
        IndexController other$indexController = other.getIndexController();
        if (this$indexController == null ? other$indexController != null : !(this$indexController).equals(other$indexController)) {
            return false;
        }
        String this$dateStr = this.getDateStr();
        String other$dateStr = other.getDateStr();
        return !(this$dateStr == null ? other$dateStr != null : !this$dateStr.equals(other$dateStr));
    }

    protected boolean canEqual(Object other) {
        return other instanceof InvoicingController;
    }

    public int hashCode() {
        int PRIME = 59;
        int result = 1;
        TableColumn<InvoicingOutData, String> $gssbApprovalNum = this.getGssbApprovalNum();
        result = result * 59 + ($gssbApprovalNum == null ? 43 : $gssbApprovalNum.hashCode());
        TableColumn<InvoicingOutData, String> $gssbDate = this.getGssbDate();
        result = result * 59 + ($gssbDate == null ? 43 : $gssbDate.hashCode());
        TableColumn<InvoicingOutData, String> $gssbDosageForm = this.getGssbDosageForm();
        result = result * 59 + ($gssbDosageForm == null ? 43 : $gssbDosageForm.hashCode());
        TextField $batchNo = this.getBatchNo();
        result = result * 59 + ($batchNo == null ? 43 : $batchNo.hashCode());
        TableColumn<InvoicingOutData, String> $gssbValidUntil = this.getGssbValidUntil();
        result = result * 59 + ($gssbValidUntil == null ? 43 : $gssbValidUntil.hashCode());
        VBox $vBox = this.getVBox();
        result = result * 59 + ($vBox == null ? 43 : $vBox.hashCode());
        ScrollPane $scrollPane = this.getScrollPane();
        result = result * 59 + ($scrollPane == null ? 43 : $scrollPane.hashCode());
        TableColumn<InvoicingOutData, String> $gssbBatchNo = this.getGssbBatchNo();
        result = result * 59 + ($gssbBatchNo == null ? 43 : $gssbBatchNo.hashCode());
        TableColumn<InvoicingOutData, String> $gssbRetailPrice = this.getGssbRetailPrice();
        result = result * 59 + ($gssbRetailPrice == null ? 43 : $gssbRetailPrice.hashCode());
        TableView<InvoicingOutData> $tableView = this.getTableView();
        result = result * 59 + ($tableView == null ? 43 : $tableView.hashCode());
        TableColumn<InvoicingOutData, String> $index = this.getIndex();
        result = result * 59 + ($index == null ? 43 : $index.hashCode());
        TableColumn<InvoicingOutData, String> $gssbFormat = this.getGssbFormat();
        result = result * 59 + ($gssbFormat == null ? 43 : $gssbFormat.hashCode());
        TableColumn<InvoicingOutData, String> $gssbUnit = this.getGssbUnit();
        result = result * 59 + ($gssbUnit == null ? 43 : $gssbUnit.hashCode());
        TableColumn<InvoicingOutData, String> $gssbProName = this.getGssbProName();
        result = result * 59 + ($gssbProName == null ? 43 : $gssbProName.hashCode());
        TextField $proId = this.getProId();
        result = result * 59 + ($proId == null ? 43 : $proId.hashCode());
        TableColumn<InvoicingOutData, String> $gssbProId = this.getGssbProId();
        result = result * 59 + ($gssbProId == null ? 43 : $gssbProId.hashCode());
        TableColumn<InvoicingOutData, String> $gssbFactory = this.getGssbFactory();
        result = result * 59 + ($gssbFactory == null ? 43 : $gssbFactory.hashCode());
        DatePicker $finishDate = this.getFinishDate();
        result = result * 59 + ($finishDate == null ? 43 : $finishDate.hashCode());
        TableColumn<InvoicingOutData, String> $gssbType = this.getGssbType();
        result = result * 59 + ($gssbType == null ? 43 : $gssbType.hashCode());
        TableColumn<InvoicingOutData, String> $gssbQty = this.getGssbQty();
        result = result * 59 + ($gssbQty == null ? 43 : $gssbQty.hashCode());
        TableColumn<InvoicingOutData, String> $gssbOrigin = this.getGssbOrigin();
        result = result * 59 + ($gssbOrigin == null ? 43 : $gssbOrigin.hashCode());
        DatePicker $startDate = this.getStartDate();
        result = result * 59 + ($startDate == null ? 43 : $startDate.hashCode());
        TableColumn<InvoicingOutData, String> $gssbVoucherId = this.getGssbVoucherId();
        result = result * 59 + ($gssbVoucherId == null ? 43 : $gssbVoucherId.hashCode());
        ObservableList<InvoicingOutData> $observableTableList = this.getObservableTableList();
        result = result * 59 + ($observableTableList == null ? 43 : $observableTableList.hashCode());
        IndexController $indexController = this.getIndexController();
        result = result * 59 + ($indexController == null ? 43 : ($indexController).hashCode());
        String $dateStr = this.getDateStr();
        result = result * 59 + ($dateStr == null ? 43 : $dateStr.hashCode());
        return result;
    }

    public String toString() {
        return "InvoicingController(gssbApprovalNum=" + this.getGssbApprovalNum() + ", gssbDate=" + this.getGssbDate() + ", gssbDosageForm=" + this.getGssbDosageForm() + ", batchNo=" + this.getBatchNo() + ", gssbValidUntil=" + this.getGssbValidUntil() + ", vBox=" + this.getVBox() + ", scrollPane=" + this.getScrollPane() + ", gssbBatchNo=" + this.getGssbBatchNo() + ", gssbRetailPrice=" + this.getGssbRetailPrice() + ", tableView=" + this.getTableView() + ", index=" + this.getIndex() + ", gssbFormat=" + this.getGssbFormat() + ", gssbUnit=" + this.getGssbUnit() + ", gssbProName=" + this.getGssbProName() + ", proId=" + this.getProId() + ", gssbProId=" + this.getGssbProId() + ", gssbFactory=" + this.getGssbFactory() + ", finishDate=" + this.getFinishDate() + ", gssbType=" + this.getGssbType() + ", gssbQty=" + this.getGssbQty() + ", gssbOrigin=" + this.getGssbOrigin() + ", startDate=" + this.getStartDate() + ", gssbVoucherId=" + this.getGssbVoucherId() + ", observableTableList=" + this.getObservableTableList() + ", indexController=" + this.getIndexController() + ", dateStr=" + this.getDateStr() + ")";
    }
}

